package com.swak.timer;

public class RTT {

	/**
	 * 加权系数
	 */
	private Double a = 0.125d;

	/**
	 * 基于移动平均统计的RTT
	 */
	private Long estimateRTT;

	/**
	 * 传入当前监测的： RTT
	 * 
	 * @param rtt
	 */
	public RTT calculate(long sampleRTT) {

		/*
		 * 第一次监测
		 */
		if (estimateRTT == null) {
			estimateRTT = sampleRTT;
		}

		/*
		 * 后期监测
		 */
		else {

			/*
			 * 计算 estimateRTT
			 */
			estimateRTT = (long) ((1 - a) * estimateRTT + a * sampleRTT);
		}

		/*
		 * 返回当前的对象
		 */
		return this;
	}

	/**
	 * 返回计算的 RTO 值 
	 * 
	 * @return
	 */
	public long getEstimateRTT() {
		return estimateRTT;
	}
}
